using System;
using System.Collections.Generic;
using System.Text;
using Sedodream.Sudoku.Board;

namespace Sedodream.Sudoku.Players
{
	/// <summary>
	/// Interface to all Sudoku players.
	/// </summary>
	public interface IPlayer
	{
		/// <summary>
		/// Begins play for the Board
		/// and returns the solved board.
		/// </summary>
		/// <param name="board"></param>
		/// <returns></returns>
		IBoard StartPlay(IBoard board);

		BoardState PlayMove(IBoard board, IMove move);

		void UndoMove(IBoard board, IMove move);

		int NumMovesPlayed
		{
			get;
		}
		int MaxNumMoves
		{
			get;
			set;
		}
		//bool AdvanceBoard(ISudokuBoard board);
		/// <summary>
		/// This will play the provided move on the board, and return
		/// whether the board is solved.
		/// </summary>
		/// <param name="board"></param>
		/// <param name="move"></param>
		/// <returns>true if the board is solved, false otherwise</returns>
		//bool PlayMove(ISudokuBoard board, ISudokuMove move);
	}
}
